package com.smartmedi.ai.service;

import com.smartmedi.ai.domain.entity.JhInMrFile;
import com.baomidou.mybatisplus.extension.service.IService;
import com.smartmedi.ai.domain.vo.FtpFileVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
* @author XWQ
* @description 针对表【JH_IN_MR_FILE(住院电子病历文件表（与JH_IN_MR通过RECORD_ID关联）)】的数据库操作Service
* @createDate 2025-07-17 16:29:20
*/
public interface JhInMrFileService extends IService<JhInMrFile> {

    /**
     * 从FTP获取文件并保存到数据库
     * @param ftpFilePath FTP文件路径（如：/path/to/file.pdf）
     * @param recordId 关联病历的ROWKEY
     * @param fileDesc 文件描述
     * @return 保存后的文件ID
     */
    Long importFromFtp(String ftpFilePath, String recordId, String fileDesc);
    
    /**
     * 根据条件分页查询文件列表
     *
     * @param page     分页参数
     * @param fileName 文件名关键字
     * @param fileType 文件类型
     * @param recordId 关联病历ID
     * @param sortField 排序字段
     * @param sortOrder 排序顺序
     * @return 分页结果
     */
    Page<JhInMrFile> getFileList(Page<JhInMrFile> page, String fileName, String fileType, String recordId, String sortField, String sortOrder);
    
    /**
     * 上传文件并保存到数据库
     *
     * @param file     文件
     * @param recordId 关联病历ID
     * @param fileDesc 文件描述
     * @return 保存后的文件ID
     */
    Long uploadFile(MultipartFile file, String recordId, String fileDesc) throws IOException;
    
    /**
     * 获取文件内容
     *
     * @param fileId 文件ID
     * @return 文件内容的字节数组
     */
    byte[] getFileContent(Long fileId);
    
    /**
     * 生成文件预览URL
     *
     * @param fileId 文件ID
     * @return 预览URL
     */
    String generatePreviewUrl(Long fileId);

}
